﻿using System;
// 3.返回类型的兼容性
// 如果调用一个方法，得到的返回值类型可能大于请求的类型，这是正常的多态性为。
// 基于同样的原因，委托的返回类型可以小于它的目标方法的返回值类型，这被为协变。

namespace _089_委托的兼容性_返回类型的兼容性
{
    delegate object ObjectRetriever();
    class Test
    {
        static void Main(string[] args)
        {
            ObjectRetriever o = new ObjectRetriever(RetriveString);
            object result = o();
            Console.WriteLine(result); // hello
            //ObjectRetriever期望返回一个object，但object子类还会委托返回类型协变。

            Console.ReadKey();
        }
        static string RetriveString() { return "hello"; }
    }
}